package com.cloudbroker.bcs.csvc.push.api.t2service;

import com.cloudbroker.bcs.common.annotation.NoLogin;
import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.csvc.push.api.vo.request.*;
import com.cloudbroker.bcs.csvc.push.api.vo.response.*;
import com.hundsun.jresplus.remoting.impl.annotation.Service;
import com.hundsun.jresplus.remoting.impl.annotation.ServiceModule;
import com.hundsun.jresplus.remoting.impl.annotation.ServiceParam;

/**
 * Created by daibd19671 on 2016/9/9.
 */
@ServiceModule
public interface PushT2Service {
    /**
     * 获取极光绑定信息
     * @return
     */
    @Service(functionId = "847100", desc = "获取极光绑定信息")
    public TagAliasBack getDeviceTagAlias(@ServiceParam("param")DeviceTagAliasVo deviceTagAliasVo);

    /**
     * 更新tag  别名
     */
    @Service(functionId = "847101", desc = "更新tag  别名")
    public HSBCPSBackVO updateDeviceTagAlias (@ServiceParam("param")UpdateDeviceTagAliasVo updateDeviceTagAliasVo);

    /**
     * 添加或删除tag
     * @return
     */
    @Service(functionId = "847102", desc = "添加或删除tag")
    public HSBCPSBackVO addRemoveDevicesFromTag(@ServiceParam("param")AddRemoveTagVo addRemoveTagVo);

    /**
     * 按tag推送
     */
    @Service(functionId = "847103", desc = "按tag推送")
    public PushBack sendAllNotificationWithTag(@ServiceParam("param")PushTagVo pushTagVo);

    /**
     * 按别名推送
     */
    @Service(functionId = "847104", desc = "按别名推送")
    public PushBack sendAllNotificationWithAlias(@ServiceParam("param")PushAliasVo pushAliasVo);

    /**
     * 按设备编号推送
     */
    @Service(functionId = "847105", desc = "按设备编号推送")
    public PushBack sendAllNotificationWithRegId(@ServiceParam("param")PushRegIdVo pushRegIdVo);

    /**
     * 推送所有-广播
     */
    @Service(functionId = "847106", desc = "推送所有")
    public PushBack sendNotificationAll(@ServiceParam("param")PushAllVo pushAllVo);

    /**
     * 启用定时推送任务
     */
    @Service(functionId = "847107", desc = "启用定时推送任务")
    HSBCPSBackVO enableSchedulePush(EnableDisableScheduleVo form);
    /**
     * 禁用定时推送任务
     */
    @Service(functionId = "847108", desc = "禁用定时推送任务")
    HSBCPSBackVO disableSchedulePush(EnableDisableScheduleVo form);
    /**
     * 修改定时推送内容
     */
    @Service(functionId = "847109", desc = "修改定时推送内容")
    HSBCPSBackVO updateSchedulePush(UpdateScheduleVo form);

    /**
     * 修改定时推送内容
     */
    @Service(functionId = "847110", desc = "统计推送结果")
    PushReportBack getPushReport(PushReportVo form);
//
//    /**
//     * 定时推送-推送-RegID
//     */
//    @Service(functionId = "847107", desc = "定时推送-推送-RegID")
//    PushBack sendSingleSchedulePushByRegID(SingleSchedulePushRegIDVo form);
//
//    /**
//     * 定时推送-推送-Tag
//     */
//    @Service(functionId = "847108", desc = "定时推送-推送-Tag")
//    PushBack sendSingleSchedulePushByTag(SingleSchedulePushTagVo form);
//
//    /**
//     * 定时推送-推送-Alias
//     */
//    @Service(functionId = "847109", desc = "定时推送-推送-Alias")
//    PushBack sendSingleSchedulePushByAlias(SingleSchedulePushAliasVo form);
//
//    /**
//     * 定时推送-推送所有-广播
//     */
//    @Service(functionId = "847110", desc = "定时推送-推送所有-广播")
//    PushBack sendSingleSchedulePushAll(SingleSchedulePushAllVo form);

//    /**
//     * 定时推送
//     * @param schedulePushVo
//     * @return
//     */
//    @Service(functionId = "847107", desc = "定时推送")
//    public HSBCPSBackVO createSingleSchedule(@ServiceParam("param")SchedulePushVo schedulePushVo);


}
